package com.skh.array;

import java.util.ArrayList;
import java.util.List;

/**
 * 杨辉三角
 */
public class Generate {

    /**
     * 给定一个非负整数 numRows，生成杨辉三角的前 numRows 行。
     * 在杨辉三角中，每个数是它左上方和右上方的数的和。
     *
     * 输入: 5
     * 输出:
     * [
     *      [1],
     *     [1,1],
     *    [1,2,1],
     *   [1,3,3,1],
     *  [1,4,6,4,1]
     * ]
     */

    public static List<List<Integer>> generate(int numRows) {
        List<List<Integer>> result = new ArrayList<>();
        if (numRows == 0) {
            return result;
        }

        List<Integer> firstRow = new ArrayList<>();
        result.add(firstRow);

        firstRow.add(1);

        for (int i = 1; i < numRows; i++) {
            List<Integer> row = new ArrayList<>();
            List<Integer> prevRow = result.get(i - 1);
            row.add(1);//第一个数永远是1

            //填充中间数
            for (int j = 1; j < i; j++) {
                row.add(prevRow.get(j - 1) + prevRow.get(j));
            }

            row.add(1);//最后一个数永远是1
            result.add(row);
        }

        return result;

    }

    public static void main(String[] args) {
        List<List<Integer>> generate = Generate.generate(4);

        for (List<Integer> integers : generate) {
            System.out.println("integers = " + integers);
        }
    }

}
